package ar.edu.utn.frgp.banco.servlets;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import ar.edu.utn.frgp.banco.domain.Cliente;
import ar.edu.utn.frgp.banco.domain.PlazoFijo;


import ar.edu.utn.frgp.banco.service.RecursoServicePlazoFijo;


import ar.edu.utn.frgp.banco.service.impl.RecursoServicePlazoFijoImpl;

import ar.edu.utn.frgp.banco.servlets.scope.MessageBean;
import ar.edu.utn.frgp.banco.servlets.scope.PlazoFijoBean;
/**
 * Servlet implementation class ServicioVerificarCliente
 */
public class PlazoFijoRenovarServlet extends GenericServlet {
	private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public PlazoFijoRenovarServlet() {
        // TODO Auto-generated constructor stub
    }

	@Override
	public void realizarAccion(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		
		 String renovarpf = (String)req.getParameter("cmbrenovar");
		 String tiemponuevo = (String)req.getParameter("tiempo");
		 Cliente elCliente = (Cliente)req.getSession().getAttribute("cliente");
		 
		int dniCliente = elCliente.getDni();
		int nroPlazoFijo = Integer.parseInt(renovarpf); 
		int dias= Integer.parseInt(tiemponuevo);
		double  montoRenovacion;
		int interes; 
		
		PlazoFijo regPlazoFijo = new PlazoFijo();
 		PlazoFijo plazofijo = new PlazoFijo();

		List<PlazoFijo> plazosfijos = new ArrayList<PlazoFijo>();
					
		RecursoServicePlazoFijo servicePlazoFijo = new RecursoServicePlazoFijoImpl();
		
		String jsp = "";
		
 
		if(dias < 30)
		{
			MessageBean bean = new MessageBean();
			bean.setMensaje("El tiempo minimo de un plazo es de 30 dias");
			req.setAttribute("msjBean", bean);
			jsp = "PlazoFijoSeleccionarPlazoFijo.jsp";
			
			req.getSession().setAttribute("cliente", elCliente); // le mando todo lo que le mande la primera vez
			
			plazosfijos = servicePlazoFijo.listarPlazosFijosVencidosCliente(elCliente.getDni());
			
			PlazoFijoBean beanplazofijo = new PlazoFijoBean();
			beanplazofijo.setPlazosfijos(plazosfijos);
			
			req.getSession().setAttribute("cliente", elCliente);
			
			req.setAttribute("beanplazofijo", beanplazofijo);
		}
		else
		{
				plazofijo = servicePlazoFijo.listarPlazosFijosCodigo(nroPlazoFijo); //con estos datos armar la cuota
	
				if (dias >=90)
					{interes = 13;}
				else 
					{if (dias <=60)
					{interes = 10;}
					else
					{interes = 12;}
					}
								
				SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd");// no se usa
				
				Calendar cal2 = Calendar.getInstance();
				Date fechaAltaRenovacion = cal2.getTime();
				
				cal2.add(Calendar.DATE, dias);
				Date fechaVencimientoRenovacion = cal2.getTime();
			
				montoRenovacion = (plazofijo.getMonto()*plazofijo.getInteres()/100) + plazofijo.getMonto();
				
				servicePlazoFijo.dasactivarPlazosFijos(plazofijo.getIdplazofijo());
				
				regPlazoFijo.cargarPlazoFijo(fechaAltaRenovacion,fechaVencimientoRenovacion,dniCliente,2,plazofijo.getNrocuentaorigen(),1,plazofijo.getNrocuentadestino(),montoRenovacion,interes);
				servicePlazoFijo.crearPlazosFijos(regPlazoFijo);
				
				jsp = "menuplazofijo.jsp";
		
		}
		
		req.getRequestDispatcher(jsp).forward(req, resp);
		
		   }
	}
